const path = require('path')
const xlsx = require("node-xlsx");
const inquirer = require('inquirer')
// import inquirer from 'inquirer'

const fs = require("fs");
// 导入utils
const {trim} = require('./utils')
// 语言包key值对应的列
const keyColumIndex = 1

const inputPath = './input'
const outputPath = './output'
// const dirCache={};
// 读取input文件夹下的xlsx文件
var files = fs.readdirSync(inputPath);
// console.log(files);
const choices = files.map((item, index) => { return { name: item, value: item } })
inquirer.prompt([
    {
        type: 'list',
        name: 'file',
        message: '选择要翻译的文件',
        default: 'feat',
        loop: false,
        choices: choices
    }
]).then(answers => {

    // 读取xlsx
    const sheets = xlsx.parse(`${inputPath}/${answers.file}`);
    // 获取xlsx第一个标签栏的数据，要转换其他标签栏的数据就改变sheet[0]中的值
    const sheetData = sheets[0].data;
    // 语言包名称对应关系
    let nameMap = {
        '中文': 'zh-cn',
        '繁体中文': 'zh-tw',
        '英语': 'en-us',
        '印尼语': 'in-id',
        '土耳其': 'tr-tr',
        '土耳其语': 'tr-tr',
        '西班牙': 'es-es',
        '西班牙语': 'es-es',
        '法语': 'fr-fr',
        '德语': 'de-de',
        '波兰语': 'pl-pl',
        '葡萄牙': 'pt-pt',
        '葡萄牙语': 'pt-pt'
    };

if (!fs.existsSync(outputPath)) {
    fs.mkdirSync(path.join(__dirname, "output"));
}else{
    emptyDir(outputPath)
}
// 定义数据列表
    let langFileList = [];
// console.log(sheetData, 'sheetData')
// 循环拼装数据
    sheetData.forEach((colum, index) => {
        if (index == 0) { // 第一行标题
            colum.forEach(item => {
                let key = nameMap[item]
                langFileList.push({
                    fileName: key,
                    data: {}
                })
            })
            return;
        } else if (index === 1) { // 第二行是备注 跳过
            return
        }else { // 后面的数据
            colum.forEach((item, index) => {
                const key = colum[keyColumIndex]
                // langFileList[index].data[key] = item
                // try{
                langFileList[index].data[trim(key)] = trim(item)
                // }catch(e){
                //     console.log(index)
                // }
            })
        }
    });

    langFileList.forEach(file => {
        const name = file.fileName
        const data = file.data
        // 不压缩的情况
        fs.writeFileSync(`${outputPath}/${name}.json`, JSON.stringify(data, null, "\t"), {encoding: 'utf8'});
        // 压缩的情况
        // fs.writeFileSync("./output/json/result.json", JSON.stringify(jsonObj));
        console.log('> 添加' + name + '.json文件成功');
    })
    console.log('------- 文件转换完成 -------')
})


function emptyDir(path) {
    const files = fs.readdirSync(path);
    files.forEach(file => {
        const filePath = `${path}/${file}`;
        const stats = fs.statSync(filePath);
        if (stats.isDirectory()) {
            emptyDir(filePath);
        } else {
            fs.unlinkSync(filePath);
            console.log(`> 删除${file}文件成功`);
        }
    });
}
